Перейти к основному содержимому

5.03. Операторы и циклы в Java

Разработчику Архитектору

Операторы и циклы в Java

Операторы можно разделить на несколько видов:

ТипПримеры
Арифметические+ — сложение, - — вычитание, * — умножение, / — деление, % — остаток от деления
Сравнения== — равно, != — не равно, > — больше, < — меньше, >= — больше или равно, <= — меньше или равно
Логические! — отрицание (NOT), & — конъюнкция (AND), &#124; — дизъюнкция (OR), ^ — исключающее ИЛИ (XOR), && — сокращённая конъюнкция, &#124;&#124; — сокращённая дизъюнкция, ~ — побитовое дополнение (NOT)
Присваивания=, +=, -=, *=, /=
Тернарныйусловие ? значение_если_истина : значение_если_ложь
Условные операторыif-else, switch
Прочие++ — инкремент (увеличение на 1), -- — декремент (уменьшение на 1), // — однострочный комментарий, /* */ — многострочный комментарий

Важно:

Для примитивных типов (например, int, double) оператор == сравнивает значения.

Для объектов (например, строк или пользовательских классов) оператор == сравнивает ссылки на объекты, то есть их физическое местоположение в памяти.

Чтобы сравнить содержимое объектов, используется метод .equals().

В Java есть методы, которые выполняют функции, аналогичные операторам:

  • .equals() — аналог оператора == для сравнения содержимого объектов.
  • .compareTo() — используется для сравнения строк или объектов, реализующих интерфейс Comparable;
  • Math.addExact() , Math.subtractExact() , Math.multiplyExact() — аналоги операторов +, -, *, но с проверкой на переполнение. Если результат выходит за пределы допустимых значений, выбрасывается исключение ArithmeticException;
  • Integer.bitCount() — подсчитывает количество единиц в двоичном представлении числа. Аналогично работе с битовыми операциями (&, |, ^);
  • Objects.equals() — безопасный способ сравнения двух объектов, который обрабатывает null. Если оба объекта равны null, метод вернёт true;
  • Integer.parseInt() , Double.parseDouble() — аналоги операторов приведения типов (например, (int)).

Класс Object — базовый для всех классов в Java. Он определяет поведение, доступное каждому объекту.

Основные методы:

  • equals(Object obj) — сравнение объектов на логическое равенство
  • hashCode() — возвращает хеш-код объекта
  • toString() — строковое представление объекта
  • getClass() — возвращает объект Class, представляющий тип в рантайме
  • clone() — создает копию объекта (если поддерживает Cloneable)
  • finalize() — вызывается перед сборкой мусора (устарел и не рекомендуется)
  • wait(), notify(), notifyAll() — методы для межпоточной синхронизации.

Условия (условные операторы) управляют потоком выполнения программы, позволяют выполнять разный код, в зависимости от выполнения определённого условия.

if-else (если/иначе).

Синтаксис:

if (условие) {
// выполняется, если условие истинно
} else {
// выполняется, если условие ложно
}

Пример:

int age = 18;
if (age >= 18) {
System.out.println("Вы совершеннолетний");
} else {
System.out.println("Вы несовершеннолетний");
}

switch позволяет выбрать одно из нескольких возможных направлений выполнения программы.

Синтаксис:

switch (выражение) {
case значение1:
// код
break;
case значение2:
// код
break;
default:
// код по умолчанию
}

Пример:

int day = 3;
switch (day) {
case 1 -> System.out.println("Понедельник");
case 2 -> System.out.println("Вторник");
case 3 -> System.out.println("Среда");
default -> System.out.println("Неизвестный день");
}

Циклы позволяют выполнять блок кода несколько раз.

for (для) используется, когда известно количество повторений.

Синтаксис:

for (инициализация; условие; обновление) {
// тело цикла
}

Пример:

for (int i = 0; i < 5; i++) {
System.out.println("i = " + i);
}

while (пока) проверяет условие перед каждой итерацией.

Синтаксис:

while (условие) {
// тело цикла
}

Пример:

int i = 0;
while (i < 5) {
System.out.println("i = " + i);
i++;
}

do-while (делать, пока), выполняется хотя бы один раз, даже если условие ложно.

Синтаксис:

do {
// тело цикла
} while (условие);

Пример:

int j = 0;
do {
System.out.println("j = " + j);
j++;
} while (j < 5);